/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package desarrollosoft.ghce.servicio.interfaces;

import desarrollosoft.ghce.entidades.Diagnostico;
import desarrollosoft.ghce.entidades.GrupoEtario;
import desarrollosoft.ghce.entidades.Monodroga;
import desarrollosoft.ghce.entidades.Sexo;
import java.util.Date;
import java.util.List;

/**
 *
 * @author ariel
 */
public interface IServicioEstadisticas {

    public List<Sexo> obtenerTodosSexos();

    public int obtenerAnioMinimoElementos();

    public int obtenerAnioActual();

    public List<String> obtenerMeses();
    
    public List<Diagnostico> obtenerDiagnosticosMasComunes(
            Sexo sexo,
            int edadDesde,
            int edadHasta,
            int anioDesde,
            int anioHasta,
            int mesDesde,
            int mesHasta
    );
    
    List<Monodroga> obtenerMedicamentosMasComunes(
            Sexo sexoSeleccionado,
            int edadDesde,
            int edadHasta,
            int anioDesde,
            int anioHasta,
            int mesDesde,
            int mesHasta
    );

    /**
     * 
     * @param diagnostico sobre el cual obtener el promedio
     * @param sexo de los pacientes sobre los cuales obtener el promedio
     * @param fechaDesde 1° de algun mes, de algun año
     * @return el promedio o null si no se estableció el diagnostico en ese mes
     */
    public Double obtenerPromedioEdades(Diagnostico diagnostico, Sexo sexo, Date fechaDesde);

    /**
     * 
     * @param sexo
     * @param fechaDesde
     * @param edadDesde
     * @param edadHasta
     * @return bajas logicas sobre total, (en pacientes de edad solicitada), ocacionadas durante el mes (fecha desde: 1° de algo...)
     */
    public Double obtenerBajasSobreTotalEnFechaEdadesSexo(Sexo sexo, Date fechaDesde, int edadDesde, int edadHasta);

    public List<GrupoEtario> obtenerTodosGruposEtarios();
    
}
